FUNIT: нейросеть для image-2-image трансформаций от NVIDIA

В Nvidia, Cornell и Aalto разработали нейросеть (FUNIT), которая преобразует изображение объекта из одного класса в другой (например, меняет породу собаки на изображении) и при этом требует минимального количества данных для обучения. FUNIT достигает state-of-the-art результатов и в части случаев обходит конкурирующие архитектуры.

Обычно нейросети для того, чтобы выдавать реалистичные результаты, требуются большие объемы данных для обучения. Сбор и разметка данных на текущий момент являются ресурсоемкими. При этом люди способны принимать решения на основе ограниченного количества данных благодаря высокой обобщающей способности. Поэтому одним из направлений в глубоком обучении является Few-Shot Learning(FSL). FSL направление фокусируется на увеличении обобщающей способности моделей. FUNIT позиционируется как few-shot модель, которой для преобразования объекта на изображении нужна всего пара примеров.

Архитектура FUNIT

Обучающая выборка состоит из изображений объектов, которые принадлежат к разным классам. Модель учится конвертировать объект одного класса в объект другого класса. Обученной модели необходима пара примеров изображений класса, в который хотим преобразовать, чтобы сгенерировать измененное изображение. FUNIT принимает на вход изображение, которое нужно изменить, и примеры изображений того класса, в который нужно преобразовать.

Модель основана на GAN архитектуре. Сначала производится энкодинг входного изображения (конволюционные слои и ResBlocks), одновременно кодируются изображения примеров (конволюционные слои и Average Pooling). Они поступают в декодер. На выходе получается сгенерированное изображение.

Визуализация структуры генеративной модели

 

Сравнение результатов работы нейросетей

Исследователи сравнивали работу нейросети на 4-х датасетах: Animal Faces, Birds, Flowers, Foods. Чтобы определить границы объекта на изображении исследователи использовали Faster RCNN. FUNIT сравнивали с StarGAN, MUNIT, UNIT и CycleGAN.  На отдельных примерах ниже видно, что FUNIT выдает более реалистичные результаты.

Примеры работы FUNIT и конкурирующих архитектур. Input — входные изображения, Class image y_1 и y_2 — примеры целевого класса, остальные колонки — сгенерированные разными архитектурами изображения

Ограничения работы

Несмотря на реалистичность преобразований объектов похожих классов, FUNIT плохо справляется с преобразованием в класс, сильно отличающийся от начального.

Примеры неудачных преобразований FUNIT
Подписаться
Уведомить о
guest

0 Comments
Межтекстовые Отзывы
Посмотреть все комментарии

gogpt